// 定义路由路径与组件
import Vue from 'vue'
import VueRouter from 'vue-router'
import Login from '@/components/Login.vue'
import Home from '@/components/Home.vue'
import Welcome from '@/components/Welcome.vue'
import Users from '@/components/user/Users.vue'

Vue.use(VueRouter)

const routes = [
  // 重定向的路由规则
  {
    path: '/',
    redirect: '/login'
  },
  {
    path: '/login',
    component: Login
  },
  {
    path: '/home',
    component: Home,
    // 路由到/home后就重定向
    redirect: '/welcome',
    // 子路由
    children:[
      {path: '/welcome', component: Welcome},
      {path: '/users', component: Users}
    ]
  }
]
// 新建路由对象
const router = new VueRouter({
  routes
})

// 挂载路由导航守卫，判断是否需要登录
router.beforeEach((to,from,next)=>{
//   to: Route: 即将要进入的目标 路由对象
// from: Route: 当前导航正要离开的路由
// next: Function: 一个函数，表示放行
// next(): 放行。 next('/login')强制跳转。
  if(to.path === '/login') return next();
  //获取token
  const tokenStr = window.sessionStorage.getItem('token');
  if (!tokenStr) {
    //没有token跳转到登录页
    return next('/login');
  }
  //有token不需要跳转，直接放行
  next();
})

// 将路由对象暴露出去
export default router
